#!/bin/bash

# 通用部署脚本 - 自动检测环境

set -e

ENVIRONMENT="auto"
PROXY_URL=""

# 解析命令行参数
while [[ $# -gt 0 ]]; do
    case $1 in
        -e|--environment)
            ENVIRONMENT="$2"
            shift 2
            ;;
        -p|--proxy)
            PROXY_URL="$2"
            shift 2
            ;;
        -h|--help)
            echo "用法: $0 [选项]"
            echo "选项:"
            echo "  -e, --environment  指定环境 (windows|linux|auto)"
            echo "  -p, --proxy       设置代理 URL"
            echo "  -h, --help        显示此帮助信息"
            exit 0
            ;;
        *)
            echo "未知参数: $1"
            exit 1
            ;;
    esac
done

echo "🚀 AIDE 自动部署工具"
echo ""

# 自动检测环境
if [ "$ENVIRONMENT" = "auto" ]; then
    if [[ "$OSTYPE" == "linux-gnu"* ]] || [[ "$OSTYPE" == "darwin"* ]]; then
        ENVIRONMENT="linux"
        echo "🔍 检测到 Unix/Linux 环境"
    else
        ENVIRONMENT="windows"
        echo "🔍 检测到 Windows 环境"
    fi
else
    echo "🎯 使用指定环境: $ENVIRONMENT"
fi

# 设置配置文件
COMPOSE_FILES="-f docker-compose.prod.yml"
if [ "$ENVIRONMENT" = "windows" ]; then
    COMPOSE_FILES="$COMPOSE_FILES -f docker-compose.windows.yml"
    echo "📁 使用 Windows 配置"
else
    COMPOSE_FILES="$COMPOSE_FILES -f docker-compose.linux.yml"
    echo "📁 使用 Linux 配置"
    
    # Linux环境需要创建数据目录
    echo "📁 创建数据存储目录..."
    sudo mkdir -p /var/lib/aide/postgres
    sudo mkdir -p /var/lib/aide/redis
    sudo chown -R 999:999 /var/lib/aide/postgres
    sudo chown -R 999:999 /var/lib/aide/redis
fi

# 检查环境变量文件
if [ ! -f .env.prod ]; then
    echo "⚠️ 警告：未找到 .env.prod 文件"
    echo "请先创建 .env.prod 文件，参考 env-prod-template.txt"
    
    read -p "是否继续部署？(y/N): " continue
    if [ "$continue" != "y" ] && [ "$continue" != "Y" ]; then
        echo "❌ 部署已取消"
        exit 1
    fi
fi

# 设置代理（如果提供）
if [ ! -z "$PROXY_URL" ]; then
    echo "🔄 配置代理: $PROXY_URL"
    export HTTP_PROXY="$PROXY_URL"
    export HTTPS_PROXY="$PROXY_URL"
    export NO_PROXY="localhost,127.0.0.1"
fi

# 停止现有容器
echo "🛑 停止现有容器..."
docker-compose $COMPOSE_FILES --env-file .env.prod down 2>/dev/null || true

# 构建并启动服务
echo "🏗️ 构建并启动服务..."
docker-compose $COMPOSE_FILES --env-file .env.prod up --build -d

# 等待服务启动
echo "⏳ 等待服务启动..."
sleep 30

# 检查服务状态
echo "🔍 检查服务状态..."
docker-compose $COMPOSE_FILES --env-file .env.prod ps

echo ""
echo "✅ 部署完成！"
echo "🌐 访问地址: http://localhost (Windows) 或 http://your-server-ip (Linux)"
echo ""
echo "📊 常用命令:"
echo "  查看日志: docker-compose -f docker-compose.prod.yml -f docker-compose.$ENVIRONMENT.yml logs -f"
echo "  重启服务: docker-compose -f docker-compose.prod.yml -f docker-compose.$ENVIRONMENT.yml restart"
echo "  停止服务: docker-compose -f docker-compose.prod.yml -f docker-compose.$ENVIRONMENT.yml down"